
import 'package:dio/dio.dart';

class HttpUtil extends Dio{
  static final HttpUtil _singleton = new HttpUtil._internal();

  factory HttpUtil() {
    // 之后改为传递
    var loginToken = "yuanhongyu";


    Options options = new Options(
      baseUrl: "http://192.168.1.108:10109",
      connectTimeout: 5000,
      receiveTimeout: 3000,
      responseType: ResponseType.JSON,
    );
    _singleton.options = options;
    _singleton.interceptor.request.onSend = (Options options){

      options.headers["loginToken"] = loginToken;
      // 在请求被发送之前做一些事情
      return options; //continue
      // 如果你想完成请求并返回一些自定义数据，可以返回一个`Response`对象或返回`dio.resolve(data)`。
      // 这样请求将会被终止，上层then会被调用，then中返回的数据将是你的自定义数据data.
      //
      // 如果你想终止请求并触发一个错误,你可以返回一个`DioError`对象，或返回`dio.reject(errMsg)`，
      // 这样请求将被中止并触发异常，上层catchError会被调用。
    };
    _singleton.interceptor.response.onSuccess = (Response response) {
      // 在返回响应数据之前做一些预处理
      return response; // continue
    };
      _singleton.interceptor.response.onError = (DioError e){
      // 当请求失败时做一些预处理
      return DioError;//continue
    };
    return _singleton;
  }

  HttpUtil._internal();

}
main() async {
  var s1 = new HttpUtil();
  var s2 = new HttpUtil();
  Response response;
  response=await new HttpUtil().post("/test/addForm?name=gyscs1",data:{"name":'gyscs1'});
  print(response.data.toString());

  print(identical(s1, s2));  // true
  print(s1 == s2);           // true
}
